package com.edou.cms.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import org.springframework.stereotype.Repository;

import com.edou.cms.entity.CmsTag;
import com.edou.cms.dto.CmsTagCondition;

@Repository("cmsTagDaoImpl")
public interface ICmsTagDao {

	/**
	 * 查询区间数据
	 * @param bounds RowBounds对象
	 * @param condition 查询条件类
	 */
	List<CmsTag> listCmsTagByPage(RowBounds bounds,@Param("condition") CmsTagCondition condition);
	
	/**
	 * 热门标签
	 * @return
	 */
	List<CmsTag> listCmsTagHotsList();
	
	/**
	 * 根据条件查询标签
	 * @return
	 */
	List<CmsTag> listCmsTagByCondition(@Param("condition") CmsTagCondition condition);
	
	/**
	 * 根据栏目id查询文章热门标签
	 * @param channelId
	 * @return
	 */
	List<CmsTag> listCmsTagHotsListByChannelId(@Param("channelId")String channelId);

	/**
	 * 查询所有标签
	 * @return
	 */
	List<CmsTag> listCmsTagAll();
	
	/**
	 * 根据专栏id查询标签
	 * @param columnId
	 * @return
	 */
	List<CmsTag> listCmsTagByColumnId(@Param("columnId") String columnId);
	
	/**
	 * 根据文章id查询标签
	 * @param columnId
	 * @return
	 */
	List<CmsTag> listCmsTagByArticleId(@Param("articleId") String articleId);
	
	/**
	 * 查询总数
	 * @param condition 查询条件类
	 * @return 总条数
	 */
	int listCmsTagByPageCount(@Param("condition") CmsTagCondition condition);

	/**
	 * 根据ID查询
	 * @param id 主键
	 * @return 文章标签
	 */
	CmsTag getCmsTagById(@Param("id") String id);

	/**
	 * 新增
	 * @param item 文章标签
	 */
	void add(CmsTag item);

	/**
	 * 修改
	 * @param item 文章标签
	 */
	void update(CmsTag item);

	/**
	 * 根据ID集合批量删除
	 * @param ids ID集合
	 */
	void delByIds(String[] ids);
	
	/**
	 * 修改标签下的专栏数量
	 * @param tagId
	 */
	void updateCmsTagColumn(@Param("tagId")String tagId,@Param("type")String type);
	
	/**
	 * 修改标签下的文章数量
	 * @param tagId
	 */
	void updateCmsTagArticle(@Param("tagId")String tagId,@Param("type")String type);
	
	/**
	 * 根据类别查询标签
	 * @param condition
	 * @return
	 */
	List<CmsTag> listCmsTagByType(@Param("condition") CmsTagCondition condition);
	
	/**
	 * 根据排序方式，进行查询热门标签
	 * @param limit
	 * @return
	 */
	List<CmsTag> listCmsTagHotsBySort(@Param("limit") Integer limit);

}

